package parse

import (
	"Crawlab/common/engine/os"
	"regexp"
)

// 城市列表匹配用到的正则表达式.
const cityListRegexp = `<a href="(http://localhost:8080/mock/www.zhenai.com/zhenghun/[0-9a-z]+)"[^>]*>([^<]+)</a>`

// 城市列表匹配结果.
func CityListParseResult(content []byte) os.ParseResult {
	compile := regexp.MustCompile(cityListRegexp)
	// 参数1: 被正则匹配的内容, []byte.
	// 参数2: 匹配个数, -1 全部匹配, int.
	matchArray := compile.FindAllSubmatch(content, -1)

	// 准备解析结果对象.
	parseResult := os.ParseResult{}

	limit := 10

	// 从解析器的匹配内容拼接解析结果对象.
	for _, singleArray := range matchArray {
		// 数组内容: [完整连接, 连接, 地名]

		parseResult.Items = append(parseResult.Items, "City "+string(singleArray[2]))
		parseResult.Requests = append(parseResult.Requests, os.Request{
			Url:       string(singleArray[1]),
			ParseFunc: CityParseResult,
		})

		// 控制只拿前十个城市
		limit--
		if 0 == limit {
			break
		}
	}

	return parseResult
}
